/**
 * 格式化工具
 * @author hejiacheng
 * @date 2021-12-3
 */

import {
  verifyNumber
} from './verifyUtil'


/**
 * 获得秒
 * @param {时间对象} date 
 */
export function getSecond(date) {
  // 如果没有时间 返回 空串
  if (!date) {
    return ""
  }
  // 获取当前秒数(0-59)    
  let second = date.getSeconds()
  return second
}

/**
 * 获得分
 * @param {时间对象} date 
 */
export function getMinute(date) {
  // 如果没有时间 返回 空串
  if (!date) {
    return ""
  }
  // 获取当前分钟数(0-59)          
  let minute = date.getMinutes()
  return minute
}


/**
 * 获得时
 * @param {时间对象} date 
 */
export function getHour(date) {
  // 如果没有时间 返回 空串
  if (!date) {
    return ""
  }
  // 获取当前小时数(0-23)          
  let hour = date.getHours()
  return hour
}


/**
 * 获得年
 * @param {时间对象} date 
 */
export function getYear(date) {
  // 如果没有时间 返回 空串
  if (!date) {
    return ""
  }
  // 获取完整的年份(4位,1970-至今)
  let year = date.getFullYear()
  return year
}


/**
 * 获得月
 * @param {时间对象} date 
 */
export function getMonth(date) {
  // 如果没有时间 返回 空串
  if (!date) {
    return ""
  }
  // 获取当前月份(0-11,0代表1月)
  let month = date.getMonth() + 1
  return month
}


/**
 * 获得日
 * @param {时间对象} date 
 */
export function getDay(date) {
  // 如果没有时间 返回 空串
  if (!date) {
    return ""
  }
  // 获取当前日(1-31)         
  let day = date.getDate()
  return day
}

/**
 * 字符串 转 时间 对象
 * @param {时间字符串} dateStirng 
 */
export function getDate(dateStirng) {
  // 如果没有时间 返回 空串
  if (!dateStirng) {
    return ""
  }
  // 时间对象
  let date = new Date(Date.parse(dateStirng.replace(/-/g, "/")))
  return date
}

/**
 * 格式化时间
 * @param {时间字符串} dateStirng 
 */
export function formatTime(dateStirng) {
  // 如果没有时间 返回 空串
  if (!dateStirng) {
    return ""
  }
  // 时间对象
  let date = new Date(Date.parse(dateStirng.replace(/-/g, "/")))

  // 返回日期 直接返回年月日
  // 获取完整的年份(4位,1970-至今)
  let year = date.getFullYear()
  // 获取当前月份(0-11,0代表1月)
  let month = date.getMonth() + 1
  // 获取当前日(1-31)         
  let day = date.getDate()
  // 获取当前小时数(0-23)          
  let hour = date.getHours()
  // 获取当前分钟数(0-59)          
  let minute = date.getMinutes()
  // 获取当前秒数(0-59)    
  let second = date.getSeconds()
  return year + "-" + month + "-" + day + ' ' + hour + ":" + minute + ":" + second

  // 现在时间
  let nowDate = new Date()
  let dateTimestamp = date.getTime()
  let nowDateTimestamp = nowDate.getTime()

  // 两个时间间隔 秒 数
  let count_second = (nowDateTimestamp - dateTimestamp) / 1000

  // 几秒前
  if (count_second < 60) {
    let res_i = Math.floor(count_second)
    return res_i + "秒前"
  }
  // 几分钟前
  if (count_second < 60 * 60) {
    let res_i = Math.floor(count_second / 60)
    return res_i + "分钟前"
  }
  // 几小时前
  if (count_second < 24 * 60 * 60) {
    let res_i = Math.floor(count_second / (60 * 60))
    return res_i + "小时前"
  }
  // 几天前
  if (count_second < 30 * 24 * 60 * 60) {
    let res_i = Math.floor(count_second / (60 * 60 * 24))
    return res_i + "天前"
  }

  return year + "-" + month + "-" + day

}

/**
 * 两个时间比较大小
 * @param {时间字符串} date1 date2
 * @returns 返回 1 第一个时间比较大， 返回-1 第二个时间比较大 返回0 相等
 */
export function compareDate(date1, date2) {
  let year1 = date1.getYear()
  // 获取当前月份(0-11,0代表1月)
  let month1 = date1.getMonth() + 1
  // 获取当前日(1-31)         
  let day1 = date1.getDate()

  let year2 = date2.getYear()
  // 获取当前月份(0-11,0代表1月)
  let month2 = date2.getMonth() + 1
  // 获取当前日(1-31)         
  let day2 = date2.getDate()

  // 比较年月日
  if (year1 > year2) {
    return 1
  } else if (year1 < year2) {
    return -1
  } else {
    if (month1 > month2) {
      return 1
    } else if (month1 < month2) {
      return -1
    } else {
      if (day1 > day2) {
        return 1
      } else if (day1 < day2) {
        return -1
      } else {
        return 0
      }
    }
  }

}

/**
 * 两个时间比较大小
 * @param {时间字符串} date1 date2
 * @returns 返回 1 第一个时间比较大， 返回-1 第二个时间比较大 返回0 相等
 */
export function compareYearMonth(date1, date2) {
  let year1 = date1.getYear()
  // 获取当前月份(0-11,0代表1月)
  let month1 = date1.getMonth() + 1

  let year2 = date2.getYear()
  // 获取当前月份(0-11,0代表1月)
  let month2 = date2.getMonth() + 1

  // 比较年月日
  if (year1 > year2) {
    return 1
  } else if (year1 < year2) {
    return -1
  } else {
    if (month1 > month2) {
      return 1
    } else if (month1 < month2) {
      return -1
    } else {
      return 0
    }
  }

}

/**
 * 
 * @param {时间} date 
 * @param {增加的年份} addYear 
 * @param {增加的月份} addMonth 
 * @param {增加的天数} addDay 
 * @param {增加的小时} addHour 
 * @param {增加的分数} addMinute
 * @param {增加的秒数} addSecond 
 */
export function addDate(date, addYear = 0, addMonth = 0, addDay = 0, addHour = 0, addMinute = 0, addSecond = 0) {
  // 获取完整的年份(4位,1970-至今)
  let year = date.getFullYear()
  // 获取当前月份(0-11,0代表1月)
  let month = date.getMonth()
  // 获取当前日(1-31)         
  let day = date.getDate()
  // 获取当前小时数(0-23)          
  let hour = date.getHours()
  // 获取当前分钟数(0-59)          
  let minute = date.getMinutes()
  // 获取当前秒数(0-59)    
  let second = date.getSeconds()


  date.setFullYear(year + addYear)
  date.setMonth(month + addMonth)
  date.setDate(day + addDay)
  date.setHours(hour + addHour)
  date.setMinutes(minute + addMinute)
  date.setSeconds(second + addSecond)

  return date
}


// let time = "2022-02-18 11:59:55"
// console.log("之前 date : ", formatTime(time), + "    之后： ", addDate(new Date(Date.parse(time.replace(/-/g, "/"))), 1, 1, 1, 1, 1, 1))